﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace QuanLyHocPhi.GUI.TacNghiep
{
    using BLL;
    using Model;

    public partial class FormThongTinDangKy_Details : QuanLyHocPhi.GUI.FormBaseDialog
    {
        private bool m_IsAdding;
        private LopHocPhan_SinhVien m_ThongTinDangKy;

        public FormThongTinDangKy_Details(bool isAdding, LopHocPhan_SinhVien thongTinDangKy)
        {
            InitializeComponent();
            m_ThongTinDangKy = thongTinDangKy;
            HienThiThongTin();
            m_IsAdding = isAdding;
            if (isAdding)
            {
                this.Text = "Dang ky sinh vien vao lop hoc phan";
                this.ActiveControl = lblHoVaTen;
                lnkSelectSinhVien.Visible = true;
            }
            else
            {
                this.Text = "Chinh sua thong tin dang ky";
                this.ActiveControl = txtHeSoMienGiam;
                lnkSelectSinhVien.Visible = false;
                lblHoVaTen.Width = lblTenLopHocPhan.Left + lblTenLopHocPhan.Width - lblHoVaTen.Left;
            }
        }

        private void HienThiThongTin()
        {
            // Lay thong tin sinh vien
            SinhVien sinhVien = null;
            if (m_ThongTinDangKy.MaSinhVien.IsNullOrEmpty() == false)
                sinhVien = BizSinhVien.GetSinhVienByMaSinhVien(m_ThongTinDangKy.MaSinhVien);

            if (sinhVien == null)
            {
                lblMaSinhVien.Text = lblHoVaTen.Text = "";
            }
            else
            {
                lblMaSinhVien.Text = sinhVien.MaSinhVien;
                lblHoVaTen.Text = sinhVien.HoVaTen;
            }

            // Hiển thị thông tin lớp học phần
            LopHocPhan lopHocPhan = null;
            if (m_ThongTinDangKy.MaLopHocPhan.IsNullOrEmpty() == false)
                lopHocPhan = BizLopHocPhan.GetLopHocPhanByMaLHP(m_ThongTinDangKy.MaLopHocPhan);
            if (lopHocPhan == null)
                lblTenLopHocPhan.Text = null;
            else
                lblTenLopHocPhan.Text = lopHocPhan.TenLopHocPhan;

            // Thông tin hệ số miễn giảm của sinh viên khi đăng ký lớp học phần này
            txtHeSoMienGiam.Text = Convert.ToString(m_ThongTinDangKy.HeSoMienGiam);
        }

        private void OnOKClick(object sender, EventArgs e)
        {
            #region Thu thập dữ liệu
            epMain.Clear();
            if (m_ThongTinDangKy.MaSinhVien.IsNullOrEmpty())
            {
                epMain.SetError(lblHoVaTen, "Chưa xác định sinh viên");
                return;
            }
            if (m_ThongTinDangKy.MaLopHocPhan.IsNullOrEmpty())
            {
                epMain.SetError(lblTenLopHocPhan, "Chưa xác định lớp học phần");
                return;
            }
            double heSoMienGiam = -1;
            try
            {
                heSoMienGiam = Convert.ToDouble(txtHeSoMienGiam.Text.Trim());
                if (heSoMienGiam < 0 || heSoMienGiam > 1)
                    heSoMienGiam = -1;
            }
            catch
            {
                heSoMienGiam = -1;
            }
            if (heSoMienGiam == -1)
            {
                epMain.SetError(txtHeSoMienGiam, "Thông tin hệ số miễn giảm không hợp lệ");
                return;
            }
            #endregion
            #region Thực hiện cập nhật
            try
            {
                LopHocPhan_SinhVien ttdk = new LopHocPhan_SinhVien
                {
                    MaLopHocPhan = m_ThongTinDangKy.MaLopHocPhan,
                    MaSinhVien = m_ThongTinDangKy.MaSinhVien,
                    HeSoMienGiam = heSoMienGiam
                };
                if (m_IsAdding)
                    BizLopHocPhan.AddNew_ThongTinDangKy(ttdk);
                else
                    BizLopHocPhan.Update_ThongTinDangKy(ttdk);
                m_ThongTinDangKy.HeSoMienGiam = heSoMienGiam;
                this.DialogResult = System.Windows.Forms.DialogResult.OK;
                this.Close();
            }
            catch (Exception exc)
            {
                DialogUtils.ShowError(exc.Message);
            }
            #endregion
        }

        private void OnLoad(object sender, EventArgs e)
        {

        }

        #region Chọn sinh viên
        private void OnHoVaTenMouseEnter(object sender, EventArgs e)
        {
            lblHoVaTen.BackColor = Color.GhostWhite;
        }

        private void OnHoVaTenMouseLeave(object sender, EventArgs e)
        {
            lblHoVaTen.BackColor = SystemColors.Control;
        }

        private void OnHoVaTenClick(object sender, EventArgs e)
        {
            if (m_IsAdding == false)
                return;
            DuLieu.SelectSinhVienDialog dlg = new DuLieu.SelectSinhVienDialog();
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                m_ThongTinDangKy.MaSinhVien = dlg.SelectedSinhVien.MaSinhVien;
                HienThiThongTin();
            }
        }

        private void OnLnkSelectSinhVienLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            OnHoVaTenClick(null, null);
        }
        #endregion

        private void txtHeSoMienGiam_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar==(char)13)
            {
                if (string.IsNullOrEmpty(txtHeSoMienGiam.Text))
                    return;
                OnOKClick(sender,e);
            }
        }

    }
}
